package cn.itsource.config;

import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;

import java.util.ArrayList;
import java.util.List;
/*
    这个类的作用：
        将所有zuul所管理的子服务集成的swagger进行统一管理


 */
@Component
@Primary
public class DocumentationConfig implements SwaggerResourcesProvider {
    @Override
    public List<SwaggerResource> get() {
       List resources = new ArrayList<>();
       /*
        这个配置的作用：将所有子服务的Swagger-ui在这里进行配置，让zuul进行统一管理.
            参数2的作用：设置zuul访问对应的子服务的 swagger-ui地址
                这个地址拼接结构是有规律的：
                    /hrm 这个指的是zuul的统一访问前缀，不能乱写，必须与zuul设置前缀相同
                    /system 网关访问当前服务的 url
                    /v2/api-docs 这段路径，是固定结构


        */
       resources.add(swaggerResource("系统管理", "/hrm/system/v2/api-docs", "2.0"));
       resources.add(swaggerResource("课程管理", "/hrm/cc/v2/api-docs", "2.0"));
       return resources;
    }

    //下面这个方法，不需要进行修改，它是将swagger所需的配置数据进行整合
    private SwaggerResource swaggerResource(String name, String location, String version) {
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName(name);
        swaggerResource.setLocation(location);
        swaggerResource.setSwaggerVersion(version);
        return swaggerResource;
    }
}